home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)zk.d64
/
txt.environment
< prev
next >
Wrap
Text File
|
2007-03-01
|
4KB
|
191 lines
┴╬ ┼╬╓╔╥╧╬═┼╬╘ ╙╘╥╔╬╟
BY ─ICK ╦LINGENS
─UTCH ├╧═┴╠ ╒SERS ╟ROUP
╥╒╬ THE FOLLOWING PROGRAM (IT IS ON
DISK AS 'ENVIR/DEMO1'):
╒╙┼ ENVIRONMENT
─╔═ ENVIR$ ╧╞ 126
ENVIR$:="╘HIS STRING WAS LEFT HERE"
STORE(X$)
╬OW ╠╧┴─ AND ╥╒╬ THE PROGRAM
╒╙┼ ENVIRONMENT
─╔═ ENVIR$ ╧╞ 126
ACCEPT(ENVIR$)
╨╥╔╬╘ ENVIR$
╘HE OUTPUT OF THIS PROGRAM IS...
╘HIS STRING WAS LEFT HERE
╬OTE: AFTER RUNNING THE FIRST PROGRAM
FROM DISK IT CHAINS THE SECOND
PROGRAM.
╘HE TWO PROCEDURES ╙╘╧╥┼ AND ┴├├┼╨╘
ARE OF COURSE IN THE PACKAGE
┼╬╓╔╥╧╬═┼╬╘. ╫ITH ╙╘╧╥┼ A STRING
(WITH MAXIMUM LENGTH OF 126) CAN BE
STORED OUTSIDE ├╧═┴╠: IN ITS
ENVIRONMENT.
╘HE STRING IS STORED FROM MEMORY
ADDRESS $C080 (A PART OF THE ╥╙232
BUFFER). ╫ITH THE FOLLOWING LINES
ADDED TO THE SECOND PROGRAM
MEM:=$C080
HILEN:=╨┼┼╦(MEM)
LOLEN:=╨┼┼╦(MEM+1)
╨╥╔╬╘ HILEN*256+LOLEN
WE FIND THE REAL LENGTH OF THE
ENVIRONMENT$; IN THIS CASE 25. ╧F
COURSE IT IS ALSO POSSIBLE WITH
╨╥╔╬╘ ╠┼╬(ENVIR$)
╫ITH ┴├├┼╨╘ WE CAN GET A STORED
STRING FROM THE ENVIRONMENT AND
ASSIGN IT TO A STRING VARIABLE.
╘HE VALUE OF THE ENVIRONMENT$ IS
╙╒╨┼╥ GLOBAL: AS SHOWN, IT SURVIVES A
╬┼╫.
╘HE ADDRESS $55 IS USED AS A GLOBAL
FLAG: 0 MEANS NO ENVIRONMENT$; 1
MEANS THAT THERE IS A SUPER GLOBAL
STRING. ╘HE GLOBAL FLAG CAN BE ASKED
WITH THE PACKAGE FUNCTION ╟╠╧┬┴╠.
╫ITH A ╙╘╧╥┼ THIS FLAG IS
AUTOMATICALLY SET.
╘HE ENVIRONMENT CAN BE CLEARED (RESET
FLAG) WITH THE PROCEDURE
┌┼╥╧╟╠╧┬┴╠
┴N ERROR MESSAGE IS REPORTED IF AN
┴├├┼╨╘ IS PERFORMED WITH A ZERO FLAG
(NOT A VARIABLE), AND IF ONE TRIES TO
ASSIGN AN ENVIRONMENT$ TO A STRING
VARIABLE WITH AN IMPROPER LENGTH
(ARGUMENT ERROR).
┴N OTHER APPLICATION:
╒╙┼ ENVIRONMENT
─╔═ RUNNED$ ╧╞ 2
RUN#:=1
╔╞ GLOBAL ╘╚┼╬
ACCEPT(RUNNED$)
RUN#:=╓┴╠(RUNNED$)
RUN#:+1
┼╬─╔╞
RUNNED$:=╙╘╥$(RUN#)
STORE(RUNNED$)
╨╥╔╬╘ "╘HIS IS PROGRAM RUN #",RUN#
╥UN THIS PROGRAM (IN EXTENDED FORM ON
DISK AS 'ENVIR/DEMO3') A FEW TIMES
AND LOOK AT THE CHANGING OUTPUT.
┬ECAUSE THE ENVIRONMENT$ IS SUPER
GLOBAL IT IS A GOOD HABIT TO LEAVE A
PROGRAM WITH ┌┼╥╧╟╠╧┬┴╠, IF THE
GLOBAL STRING IS NOT NEEDED IN
ANOTHER PROGRAM.
┴S ONE KNOWS IT IS ╬╧╘ POSSIBLE TO
╔═╨╧╥╘ VARIABLES INTO AN ┼╪╘┼╥╬┴╠
PROCEDURE (OR FUNCTION).
┬ECAUSE THE ENVIRONMENT$ RESIDES
OUTSIDE ├╧═┴╠, IT IS POSSIBLE NOW
PROVIDED THE ┼╬╓╔╥╧╬═┼╬╘ PACKAGE IS
LINKED ONTO THE MAIN PROGRAM AND THE
EXTERNAL PROCEDURE (SEE 'ENVIR/DEMO4'
ON DISK).
╘O STORE MORE THAN ONE STRING IN THE
OUTSIDE A SPECIAL TECHNIQUE IS
REQUIRED. ╔ SUGGEST TO SEPARATE THE
STRINGS WITH A SPECIAL CHARACTER,
SUCH AS THE BACKSLASH (┼NGLISH
POUND).
┬UT OF COURSE WE MUST KNOW HOW THE
STRING HAS BEEN COMPOSED TO DECOMPOSE
IT.
╒╙┼ ENVIRONMENT
─╔═ ENVIR$ ╧╞ 126
N:=5
─╔═ A$(N) ╧╞ 10
A$(1):="├╧═┴╠"
A$(2):="╒SERS"
A$(3):="╟ROUP"
A$(4):="╒╙┴"
A$(5):="╠TD."
//
COMPOSE(ENVIR$)
STORE(ENVIR$)
//
ACCEPT(ENVIR$)
╨╥╔╬╘ ELEMENT$(ENVIR$,3)
//
╨╥╧├ COMPOSE(╥┼╞ ENVIR$) ├╠╧╙┼─
// START AND END ENVIR$ ALSO WITH
// THE SEPARATOR
╔═╨╧╥╘ A$(), N
╞╧╥ I#:=1 ╘╧ N ─╧
ENVIR$:+"\"+A$(I#)
┼╬─╞╧╥ I#
ENVIR$:+"\"
┼╬─╨╥╧├ COMPOSE
//
╞╒╬├ ELEMENT$(X$,N) ├╠╧╙┼─
╞╧╥ I#:=1 ╘╧ N ─╧
P#:="\" ╔╬ X$ // STARTING SEPARATOR
X$:=X$(P+1:) // RIGHT$
┼╬─╞╧╥ I#
P#:="\" ╔╬ X$ // ENDING SEPARATOR
╔╞ P#>0 ╘╚┼╬
╥┼╘╒╥╬ X$(:P-1)
┼╠╙┼
╥┼╘╒╥╬ X$
┼╬─╔╞
┼╬─╞╒╬├ ELEMENT$
╬OTE: ╔N THE PACKAGE ╙┘╙╘┼═ FOR ╔┬═
├╧═┴╠ THERE IS AN ENVIRONMENT$ TOO
THAT CAN BE USED TO GET SOME
PARAMETERS SET WITH THE ═╙/╨├-─╧╙
COMMANDO ╙┼╘.
╘HE ╔┬═ ├╧═┴╠ PROGRAM
╒╙┼ SYSTEM
╨╥╔╬╘ ENVIRONMENT$("COMSPEC")
╨╥╔╬╘ ENVIRONMENT$("COMALPKG")
╨╥╔╬╘ ENVIRONMENT$("COMALMSG")
╨╥╔╬╘ ENVIRONMENT$("HOST")
GIVES ON MY ╧LIVETTI ═24 COMPUTER THE
FOLLOWING OUTPUT:
\├:├╧══┴╬─.├╧═
\├╧═┴╠\╟╥┴╨╚
\├╧═┴╠\─╒╘├╚.═╙╟
╧LIVETTI ═24
SHOWING THE COMMAND SPECIFICATION,
THE LINKED PACKAGE, THE FILE FROM
WHICH THE ERROR MESSAGES COME FROM
AND THE HOST.